package modelo;



import geometria.Coordenada;

/**
 * 
 * Esta clase representa un vector velocidad, tiene una dirección y un módulo.
 *
 */
public class Velocidad extends Coordenada {
	/**
	 * 
	 * @param x posicion x
	 * @param y posicion y
	 */

	public Velocidad(Double x, Double y) {
		super(x, y);
	}

	public Velocidad() {
		super();
	}

	/*public Velocidad(Coordenada unaCoordenada,
			Double moduloVelocidad) {
		super();
		this.x = unaCoordenada.x;
		this.y = unaCoordenada.y;
		this.setModulo(moduloVelocidad);
	}*/

	public Velocidad(Coordenada posicion, Coordenada unaCoordenada,
			Double moduloVelocidad) {
		//permite crear velocidades relativas
		super();
		this.p.x = unaCoordenada.getX() - posicion.getX();
		this.p.y = unaCoordenada.getY() - posicion.getY();
		this.setModulo(moduloVelocidad);
	}

	public boolean esNula() {
		return (this.getX() == 0D) && (this.getY() == 0D);  
		//return ((this.p.x.equals(0D)) && (this.y.equals(0D)));
	}

	

	public void setModulo(double moduloNuevo) throws ModuloInvalidoException {
	//public void setModulo(double moduloNuevo){
		double moduloActual = this.getModulo();

		if (moduloNuevo < 0){ throw new ModuloInvalidoException(); }
		if (this.esNula())	return;
		// Normalizo el vector y lo multiplico por la nueva norma
		this.p.x =  moduloNuevo * ( this.getX() / moduloActual);
		this.p.y = moduloNuevo * ( this.getY() / moduloActual);
		//this.p = new Coordenada(x, y);
	}

	public Double getAngulo() {
		if (this.esNula()) {
			return 0D;
		}

		return Math.atan(( this.p.getX() /this.p.getY()));

	}

}
